home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / New System Software Extensions / QuickDraw™ 3D 1.0 / Development / Interfaces / QD3DController.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-02  |  8.4 KB  |  290 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DController.h                                         **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Each physical device is represented in the system by a     **
  7.  **                 Controller record.  A device driver typically creates     **
  8.  **                 a controller.  Controller feeds changes in coordinates     **
  9.  **                 to a Tracker.                                             **
  10.  **                                                                          **
  11.  **                                                                          **
  12.  **                                                                          **
  13.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  14.  **                                                                          **
  15.  **                                                                          **
  16.  *****************************************************************************/
  17. #ifndef QD3DController_h
  18. #define QD3DController_h
  19.  
  20. #ifndef QD3D_h
  21. #include "QD3D.h"
  22. #endif  /*  QD3D_h  */
  23.  
  24. #if PRAGMA_ONCE
  25.     #pragma once
  26. #endif
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif  /*  __cplusplus  */
  31.  
  32.  
  33. /******************************************************************************
  34.  **                                                                             **
  35.  **                                Type Definitions                             **
  36.  **                                                                             **
  37.  *****************************************************************************/
  38.  
  39. #define kQ3ControllerSetChannelMaxDataSize        256
  40.  
  41. typedef TQ3Status (*TQ3ChannelGetMethod) (
  42.     TQ3ControllerRef            controllerRef,
  43.     unsigned long                channel,
  44.     void                        *data,
  45.     unsigned long                *dataSize);
  46.  
  47. typedef TQ3Status (*TQ3ChannelSetMethod) (
  48.     TQ3ControllerRef            controllerRef,
  49.     unsigned long                channel,
  50.     const void                    *data,
  51.     unsigned long                dataSize);
  52.  
  53. typedef struct TQ3ControllerData {
  54.     char                        *signature;
  55.     unsigned long                valueCount;
  56.     unsigned long                channelCount;
  57.     TQ3ChannelGetMethod            channelGetMethod;
  58.     TQ3ChannelSetMethod            channelSetMethod;
  59. } TQ3ControllerData;
  60.  
  61.  
  62. /******************************************************************************
  63.  **                                                                             **
  64.  **                                     Routines                                 **
  65.  **                                                                             **
  66.  *****************************************************************************/
  67.  
  68. QD3D_EXPORT TQ3Status Q3Controller_GetListChanged (
  69.     TQ3Boolean                    *listChanged,
  70.     unsigned long                *serialNumber);
  71.  
  72. QD3D_EXPORT TQ3Status Q3Controller_Next(
  73.     TQ3ControllerRef            controllerRef,
  74.     TQ3ControllerRef            *nextControllerRef);
  75.  
  76. QD3D_EXPORT TQ3ControllerRef Q3Controller_New(
  77.     const TQ3ControllerData        *controllerData);
  78.  
  79. QD3D_EXPORT TQ3Status Q3Controller_Decommission(
  80.     TQ3ControllerRef            controllerRef);
  81.  
  82. QD3D_EXPORT TQ3Status Q3Controller_SetActivation(
  83.     TQ3ControllerRef            controllerRef,
  84.     TQ3Boolean                    active);
  85.  
  86. QD3D_EXPORT TQ3Status Q3Controller_GetActivation(
  87.     TQ3ControllerRef            controllerRef,
  88.     TQ3Boolean                    *active);
  89.  
  90. QD3D_EXPORT TQ3Status Q3Controller_GetSignature(
  91.     TQ3ControllerRef            controllerRef,
  92.     char                        *signature,
  93.     unsigned long                numChars);
  94.  
  95. QD3D_EXPORT TQ3Status Q3Controller_SetChannel(
  96.     TQ3ControllerRef            controllerRef,
  97.     unsigned long                channel,
  98.     const void                    *data,
  99.     unsigned long                dataSize);
  100.  
  101. QD3D_EXPORT TQ3Status Q3Controller_GetChannel(
  102.     TQ3ControllerRef            controllerRef,
  103.     unsigned long                channel,
  104.     void                        *data,
  105.     unsigned long                *dataSize);
  106.  
  107. QD3D_EXPORT TQ3Status Q3Controller_GetValueCount(
  108.     TQ3ControllerRef            controllerRef,
  109.     unsigned long                *valueCount);
  110.  
  111. QD3D_EXPORT TQ3Status Q3Controller_SetTracker(
  112.     TQ3ControllerRef            controllerRef,
  113.     TQ3TrackerObject            tracker);
  114.  
  115. QD3D_EXPORT TQ3Status Q3Controller_HasTracker(
  116.     TQ3ControllerRef            controllerRef,
  117.     TQ3Boolean                    *hasTracker);
  118.  
  119. QD3D_EXPORT TQ3Status Q3Controller_Track2DCursor(
  120.     TQ3ControllerRef            controllerRef,
  121.     TQ3Boolean                    *track2DCursor);
  122.  
  123. QD3D_EXPORT TQ3Status Q3Controller_Track3DCursor(
  124.     TQ3ControllerRef            controllerRef,
  125.     TQ3Boolean                    *track3DCursor);
  126.  
  127. QD3D_EXPORT TQ3Status Q3Controller_GetButtons(
  128.     TQ3ControllerRef            controllerRef,
  129.     unsigned long                *buttons);
  130.  
  131. QD3D_EXPORT TQ3Status Q3Controller_SetButtons(
  132.     TQ3ControllerRef            controllerRef,
  133.     unsigned long                buttons);
  134.  
  135. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerPosition(
  136.     TQ3ControllerRef            controllerRef,
  137.     TQ3Point3D                    *position);
  138.  
  139. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerPosition(
  140.     TQ3ControllerRef            controllerRef,
  141.     const TQ3Point3D            *position);
  142.  
  143. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerPosition(
  144.     TQ3ControllerRef            controllerRef,
  145.     const TQ3Vector3D            *delta);
  146.  
  147. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerOrientation(
  148.     TQ3ControllerRef            controllerRef,
  149.     TQ3Quaternion                *orientation);
  150.  
  151. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerOrientation(
  152.     TQ3ControllerRef            controllerRef,
  153.     const TQ3Quaternion            *orientation);
  154.  
  155. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerOrientation(
  156.     TQ3ControllerRef            controllerRef,
  157.     const TQ3Quaternion            *delta);
  158.  
  159. QD3D_EXPORT TQ3Status Q3Controller_GetValues(
  160.     TQ3ControllerRef            controllerRef,
  161.     unsigned long                valueCount,
  162.     float                        *values,
  163.     TQ3Boolean                    *changed,
  164.     unsigned long                *serialNumber);
  165.  
  166. QD3D_EXPORT TQ3Status Q3Controller_SetValues(
  167.     TQ3ControllerRef            controllerRef,
  168.     const float                    *values,
  169.     unsigned long                valueCount);
  170.  
  171.  
  172. /******************************************************************************
  173.  **                                                                             **
  174.  **                                     Routines                                 **
  175.  **                                                                             **
  176.  *****************************************************************************/
  177.  
  178. QD3D_EXPORT TQ3ControllerStateObject Q3ControllerState_New(
  179.     TQ3ControllerRef            controllerRef);
  180.  
  181. QD3D_EXPORT TQ3Status Q3ControllerState_SaveAndReset(
  182.     TQ3ControllerStateObject    controllerStateObject);
  183.  
  184. QD3D_EXPORT TQ3Status Q3ControllerState_Restore(
  185.     TQ3ControllerStateObject    controllerStateObject);
  186.  
  187.  
  188. /******************************************************************************
  189.  **                                                                             **
  190.  **                                Type Definitions                             **
  191.  **                                                                             **
  192.  *****************************************************************************/
  193.  
  194. typedef TQ3Status (*TQ3TrackerNotifyFunc) (
  195.     TQ3TrackerObject            trackerObject,
  196.     TQ3ControllerRef            controllerRef);
  197.  
  198.  
  199. /******************************************************************************
  200.  **                                                                             **
  201.  **                                     Routines                                 **
  202.  **                                                                             **
  203.  *****************************************************************************/
  204.  
  205. QD3D_EXPORT TQ3TrackerObject Q3Tracker_New(
  206.     TQ3TrackerNotifyFunc        notifyFunc);
  207.  
  208. QD3D_EXPORT TQ3Status Q3Tracker_SetNotifyThresholds(
  209.     TQ3TrackerObject            trackerObject,
  210.     float                        positionThresh,
  211.     float                        orientationThresh);
  212.  
  213. QD3D_EXPORT TQ3Status Q3Tracker_GetNotifyThresholds(
  214.     TQ3TrackerObject            trackerObject,
  215.     float                        *positionThresh,
  216.     float                        *orientationThresh);
  217.  
  218. QD3D_EXPORT TQ3Status Q3Tracker_SetActivation (
  219.     TQ3TrackerObject            trackerObject,
  220.     TQ3Boolean                    active);
  221.  
  222. QD3D_EXPORT TQ3Status Q3Tracker_GetActivation (
  223.     TQ3TrackerObject            trackerObject,
  224.     TQ3Boolean                    *active);
  225.  
  226. QD3D_EXPORT TQ3Status Q3Tracker_GetButtons(
  227.     TQ3TrackerObject            trackerObject,
  228.     unsigned long                *buttons);
  229.  
  230. QD3D_EXPORT TQ3Status Q3Tracker_ChangeButtons(
  231.     TQ3TrackerObject            trackerObject,
  232.     TQ3ControllerRef            controllerRef,
  233.     unsigned long                buttons,
  234.     unsigned long                buttonMask);
  235.  
  236. QD3D_EXPORT TQ3Status Q3Tracker_GetPosition(
  237.     TQ3TrackerObject            trackerObject,
  238.     TQ3Point3D                    *position,
  239.     TQ3Vector3D                    *delta,
  240.     TQ3Boolean                    *changed,
  241.     unsigned long                *serialNumber);
  242.  
  243. QD3D_EXPORT TQ3Status Q3Tracker_SetPosition(
  244.     TQ3TrackerObject            trackerObject,
  245.     TQ3ControllerRef            controllerRef,
  246.     const TQ3Point3D            *position);
  247.  
  248. QD3D_EXPORT TQ3Status Q3Tracker_MovePosition(
  249.     TQ3TrackerObject            trackerObject,
  250.     TQ3ControllerRef            controllerRef,
  251.     const TQ3Vector3D            *delta);
  252.  
  253. QD3D_EXPORT TQ3Status Q3Tracker_GetOrientation(
  254.     TQ3TrackerObject            trackerObject,
  255.     TQ3Quaternion                *orientation,
  256.     TQ3Quaternion                *delta,
  257.     TQ3Boolean                    *changed,
  258.     unsigned long                *serialNumber);
  259.  
  260. QD3D_EXPORT TQ3Status Q3Tracker_SetOrientation(
  261.     TQ3TrackerObject            trackerObject,
  262.     TQ3ControllerRef            controllerRef,
  263.     const TQ3Quaternion            *orientation);
  264.  
  265. QD3D_EXPORT TQ3Status Q3Tracker_MoveOrientation(
  266.     TQ3TrackerObject            trackerObject,
  267.     TQ3ControllerRef            controllerRef,
  268.     const TQ3Quaternion            *delta);
  269.  
  270. QD3D_EXPORT TQ3Status Q3Tracker_SetEventCoordinates(
  271.     TQ3TrackerObject            trackerObject,
  272.     unsigned long                timeStamp,
  273.     unsigned long                buttons,
  274.     const TQ3Point3D            *position,
  275.     const TQ3Quaternion            *orientation);
  276.  
  277. QD3D_EXPORT TQ3Status Q3Tracker_GetEventCoordinates(
  278.     TQ3TrackerObject            trackerObject,
  279.     unsigned long                timeStamp,
  280.     unsigned long                *buttons,
  281.     TQ3Point3D                    *position,
  282.     TQ3Quaternion                *orientation);
  283.  
  284.  
  285. #ifdef __cplusplus
  286. }
  287. #endif  /*  __cplusplus  */
  288.  
  289. #endif  /*  QD3DController_h  */
  290.